home *** CD-ROM | disk | FTP | other *** search
- unit CalcTbls;
-
- {$R-,S-,I-,O-,F-,A+,U+,K+,W-,V+,B-,X+,T-,P+,L+,Y+,D+}
-
- // These interposer classes allow CanModify to be overridden so that
- // calculated fields may be edited. This unit must appear after DBTABLES
- // in the uses clause in each unit where this facility is required.
-
- interface
-
- uses
- Classes, DB, DBTables;
-
- type
- TTable = class(DBTables.TTable)
- protected
- procedure DoAfterScroll; override;
- procedure ClearCalcFields (Buffer : PChar); override;
- end;
-
- implementation
-
- {****************************************************************
- * TABLE *
- ****************************************************************}
-
- procedure TTable.DoAfterScroll;
- var
- OldState : TDataSetState;
- I : smallint;
- begin
- OldState := SetTempState (dsNewValue);
- try
- inherited;
- finally
- RestoreState (OldState);
- for I := 0 to FieldCount-1
- do if Fields [I].FieldKind = fkCalculated
- then DataEvent (deFieldChange,longint(Fields [I]));
- end;
- end;
-
- procedure TTable.ClearCalcFields (Buffer : PChar);
- begin
- // prevents calculated fields from being wiped if reqd
- if AutoCalcFields
- then inherited;
- end;
-
- end.